package cn.gpnusz.oliverwiki.controller;

import cn.gpnusz.oliverwiki.req.EbookQueryReq;
import cn.gpnusz.oliverwiki.req.EbookSaveReq;
import cn.gpnusz.oliverwiki.resp.CommonResp;
import cn.gpnusz.oliverwiki.resp.EbookQueryResp;
import cn.gpnusz.oliverwiki.resp.PageResp;
import cn.gpnusz.oliverwiki.service.EbookService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;

/**
 * @author h0ss
 * @description 电子书系统controller
 * @date 2021/8/24 - 21:40
 */
@RestController
@RequestMapping("/ebook")
public class EbookController {

    @Resource
    private EbookService ebookService;

    /**
     * 展示所有电子书数据
     *
     * @param ebookQueryReq : 请求参数（分页参数）
     * @return : cn.gpnusz.oliverwiki.resp.CommonResp<cn.gpnusz.oliverwiki.resp.PageResp<cn.gpnusz.oliverwiki.resp.EbookQueryResp>>
     * @author h0ss
     */
    @RequestMapping("/list")
    public CommonResp<PageResp<EbookQueryResp>> list(@Valid EbookQueryReq ebookQueryReq) {
        CommonResp<PageResp<EbookQueryResp>> resp = new CommonResp<>();
        resp.setMessage("数据获取成功!");
        resp.setContent(ebookService.getAll(ebookQueryReq));
        return resp;
    }

    /**
     * 按传入条件查询电子书
     *
     * @param ebookQueryReq : 电子书查询参数
     * @return : cn.gpnusz.oliverwiki.resp.CommonResp<cn.gpnusz.oliverwiki.resp.PageResp<cn.gpnusz.oliverwiki.resp.EbookQueryResp>>
     * @author h0ss
     */
    @RequestMapping("/search")
    public CommonResp<PageResp<EbookQueryResp>> search(@Valid EbookQueryReq ebookQueryReq) {
        CommonResp<PageResp<EbookQueryResp>> resp = new CommonResp<>();
        resp.setMessage("数据获取成功!");
        resp.setContent(ebookService.getAllByCondition(ebookQueryReq));
        return resp;
    }

    /**
     * 新增/编辑电子书
     *
     * @param ebookSaveReq :
     * @return : cn.gpnusz.oliverwiki.resp.CommonResp<java.lang.Object>
     * @author h0ss
     */
    @PostMapping("/save")
    public CommonResp<Object> save(@Valid @RequestBody EbookSaveReq ebookSaveReq) {
        ebookService.save(ebookSaveReq);
        return new CommonResp<>();
    }

    /**
     * 根据id删除电子书
     *
     * @param id :
     * @return : cn.gpnusz.oliverwiki.resp.CommonResp<java.lang.Object>
     * @author h0ss
     */
    @DeleteMapping("/delete/{id}")
    public CommonResp<Object> delete(@PathVariable Long id) {
        ebookService.delete(id);
        return new CommonResp<>();
    }


}
